package com.qyh.test;

import com.qyh.hhh.On;
import com.qyh.hhh.Toggle;

import java.util.List;

public interface HelloService {


    /**
     * 读取配置文件
     * 如果toggle.hello = a, 则调用 com.qyh.test.AHelloService.test1()
     * 如果toggle.hello = b, 则调用 com.qyh.test.BHelloService.test1()
     * 否则, 调用DefaultHelloService.test1()
     */


    @Toggle(
            ons = {
                    @On(expression = "#{${toggle.hello} == 'a'}", clazz = AHelloService.class),
                    @On(expression = "#{${toggle.hello} == 'b'}", clazz = BHelloService.class),
            },
            defaultClazz = DefaultHelloService.class,
            defaultBeanName = "defaultHelloService"
    )
    String test1(List<String> names);


    /**
     * 以 someConditionMatcher.check() 的结果为准, 其中 someConditionMatcher 是 Spring容器中的一个bean
     * 如果 expression表达式结果 == true，则调用 AHelloService.test2()，
     * 否则调用DefaultHelloService.test()
     */

    @Toggle(
            ons = @On(expression = "#{someConditionMatcher.check() == 'a'}", clazz = AHelloService.class),
            defaultClazz = DefaultHelloService.class
    )
    String test2(String name);
}
